home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 3: CDPD 3
/
Almathera Ten on Ten - Disc 3: CDPD3.iso
/
fish
/
751-760
/
754
/
softrack
/
softrack.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-03-18
|
4KB
|
175 lines
/* program SofTrack.Shows the floppy head position and whether it is a read or
write operation.compile with lattice C 3.1 and link with Install.o and
GetUnitID.o using blink.
Written by Kamran Karimi
*/
#include <exec/exec.h>
#include <intuition/intuition.h>
#include <resources/disk.h>
struct TextAttr ROMFont =
{ (STRPTR)"topaz.font",TOPAZ_EIGHTY,FS_NORMAL,FPF_ROMFONT };
struct TextAttr MyPRG =
{ (STRPTR)"topaz.font",TOPAZ_EIGHTY,FSF_BOLD,FPF_ROMFONT };
struct IntuiText DF0 =
{ 2,0,JAM2,2,1,&ROMFont,(UBYTE *) "DF0: ? DF1: ? ",NULL };
struct IntuiText DF2 =
{ 2,0,JAM2,2,10,&ROMFont,(UBYTE *)"DF2: ? DF3: ? ",&DF0 };
struct IntuiText DFT =
{ 1,0,JAM2,12,1,&ROMFont,(UBYTE *)"000 R",NULL };
struct IntuiText Intro =
{ 2,0,JAM2,2,1,&MyPRG,(UBYTE *) " SofTrack ",NULL };
struct IntuiText MyName =
{ 1,0,JAM2,2,10,&ROMFont,(UBYTE *)" By Kamran Karimi ",&Intro };
struct IntuiText NoDisk =
{ 2,0,JAM2,12,1,&ROMFont,(UBYTE *)" N/A",NULL };
struct IntuitionBase *IntuitionBase;
struct Window *MyWindow;
struct MsgPort *Port;
struct DiscResource *DiskBase;
ULONG CoOrd[4][2] =
{ {23,10},{105,10},{23,19},{105,19} };
struct NewWindow WindowPar =
{ 400,0,171,30,0,1,NULL,WINDOWDEPTH|WINDOWDRAG,NULL,NULL,
(UBYTE *)"SofTrack",NULL,NULL,0,0,0,0,WBENCHSCREEN};
short Install();
struct MsgPort *CreatePort();
unsigned long GetUnitID();
struct Library *OpenLibrary(),*OpenResource();
struct Window *OpenWindow();
char SetTaskPri();
struct Task *FindTask();
struct Message *GetMsg(),*WaitPort();
struct MsgPort *FindPort();
void ReplyMsg(),CloseLibrary(),CloseWindow(),CloseAll();
void PrintIText(),Forbid(),Permit();
void main()
{
char *titel,NewTitel[6],OldTitel0[6],OldTitel1[6],OldTitel2[6],OldTitel3[6];
char Unit;
struct Task *task;
unsigned long count;
struct Message *message;
struct RastPort *MyWindowRP;
if(FindPort("SofTrack's Port")) exit(0);
if(!(IntuitionBase =
(struct IntuitionBase *)OpenLibrary("intuition.library",0L)))
{
CloseAll();
exit(10);
}
if(!(MyWindow = OpenWindow(&WindowPar)))
{
CloseAll();
exit(10);
}
MyWindowRP = MyWindow->RPort;
PrintIText(MyWindowRP,&MyName,2L,10L);
Delay(150L);
PrintIText(MyWindowRP,&DF2,2L,10L);
if(!(Port = CreatePort("SofTrack's Port",1L)))
{
CloseAll();
exit(10);
}
if (Install())
{
CloseAll();
exit(10);
}
if(DiskBase = (struct DiscResource *)OpenResource("disk.resource",0L))
{
for(count = 0;count <= 4;count++)
{
if(GetUnitID(count) == DRT_EMPTY)
PrintIText(MyWindowRP,&NoDisk,CoOrd[count][0],CoOrd[count][1]);
}
}
strcpy(OldTitel0," ");
strcpy(OldTitel1," ");
strcpy(OldTitel2," ");
strcpy(OldTitel3," ");
task = FindTask(NULL);
SetTaskPri(task,19L);
for (;;)
{
WaitPort(Port);
message = GetMsg(Port);
Forbid();
titel = (char *)(&message->mn_Length);
titel += 2;
Unit = *titel;
titel += 2;
strcpy(NewTitel,titel);
switch(Unit)
{
case 0:
if(strcmp(NewTitel,OldTitel0))
{
DFT.IText = (UBYTE *)NewTitel;
PrintIText(MyWindowRP,&DFT,23L,10L);
strcpy(OldTitel0,NewTitel);
}
break;
case 1:
if (strcmp(NewTitel,OldTitel1))
{
DFT.IText = (UBYTE *)NewTitel;
PrintIText(MyWindowRP,&DFT,105L,10L);
strcpy(OldTitel1,NewTitel);
}
break;
case 2:
if (strcmp(NewTitel,OldTitel2))
{
DFT.IText = (UBYTE *)NewTitel;
PrintIText(MyWindowRP,&DFT,23L,19L);
strcpy(OldTitel2,NewTitel);
}
break;
case 3:
if (strcmp(NewTitel,OldTitel3))
{
DFT.IText = (UBYTE *)NewTitel;
PrintIText(MyWindowRP,&DFT,105L,19L);
strcpy(OldTitel3,NewTitel);
}
break;
}
Permit();
ReplyMsg(message);
}
}
void CloseAll()
{
if (MyWindow) CloseWindow(MyWindow);
if (IntuitionBase) CloseLibrary(IntuitionBase);
}